package com.qf.business.classes.controller;

import com.qf.business.classes.service.ClassesService;
import com.qf.data.entity.Classes;
import com.qf.data.r.Codes;
import com.qf.data.r.R;
import com.qf.data.r.RUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.constraints.NotNull;

/**
 * description: 班级的控制器
 * author: Ken
 * 公众号：Java架构栈
 */
@RestController
@RequestMapping("/cls")
@Validated
@Slf4j
public class ClsController {

    @Autowired
    private ClassesService classesService;

    /**
     * 根据班级id查询班级信息
     * @param cId
     * @return
     */
    @RequestMapping("/getById")
//    @Trace
    public R<Classes> getClsByCid(@NotNull(message = "班级id不能为空！") Long cId){
        log.debug("[get cls] 根据id获取班级信息 - {}", cId);
        Classes cls = classesService.getById(cId);

        //获取Skywalking的追踪号
//        String traceId = TraceContext.traceId();
//        System.out.println("---->" + traceId);

        return RUtils.create(cls);
    }

    /**
     * 操作班级的人数信息
     * @param cid - 操作的班级id
     * @param nums - 操作的人数
     * @param type - 0-新增 1-删除
     * @return
     */
    @RequestMapping("/updateClsNums")
    @Transactional
    public R updateClsNums(Long cid, Integer nums, Integer type){
        log.debug("[update cls nums] 修改班级的人数信息：班级号-{} 操作人数-{} 操作类型-{}", cid, nums, type);

        Classes cls = classesService.getById(cid);
        Integer classNum = cls.getClassNum();
        if (type == 0) {
            //新增班级人数
            cls.setClassNum(classNum + nums);
        } else {
            //扣减班级人数
            cls.setClassNum(classNum - nums);
        }
        //修改
        classesService.updateById(cls);
        return RUtils.create(Codes.SUCC, cls.getClassNum());
    }
}
